package com.mentaleye.util;
import org.apache.velocity.context.Context;
import org.apache.velocity.tools.Scope;
import org.apache.velocity.tools.ToolManager;
import org.apache.velocity.tools.view.ViewToolContext;
import org.springframework.web.servlet.view.velocity.VelocityLayoutView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

public class VelocityToolboxView2 extends VelocityLayoutView{
    protected Context createVelocityContext(Map<String, Object> model,
	 HttpServletRequest request, HttpServletResponse response)
	             throws Exception {// Create a
	                                 // ChainedContext
	                                 // instance.
	         ViewToolContext ctx;

	         ctx = new ViewToolContext(getVelocityEngine(), request, response,
	                 getServletContext());

	         ctx.putAll(model);

	         if (this.getToolboxConfigLocation() != null) {
	             ToolManager tm = new ToolManager();
	             tm.setVelocityEngine(getVelocityEngine());
	             tm.configure(getServletContext().getRealPath(
	                     getToolboxConfigLocation()));

	             if (tm.getToolboxFactory().hasTools(Scope.APPLICATION)) {
	                 ctx.addToolbox(tm.getToolboxFactory().createToolbox(
	                         Scope.APPLICATION));
	             }
	             if (tm.getToolboxFactory().hasTools(Scope.SESSION)) {
	                 ctx.addToolbox(tm.getToolboxFactory().createToolbox(
	                         Scope.SESSION));
	             }
				 if (tm.getToolboxFactory().hasTools(Scope.REQUEST)) {
					 ctx.addToolbox(tm.getToolboxFactory().createToolbox(
							 Scope.REQUEST));
				 }
	         }
	         return ctx;
	     }
}
